/*
 * @Description:
 * @Autor: liujinyin
 * @Date: 2021-07-02 18:17:24
 * @LastEditors: liujinyin
 * @LastEditTime: 2021-07-02 19:40:42
 */
package models

import (
	"encoding/json"

	"github.com/micro-plat/lib4go/types"
)

type Item struct {
	UID  string `json:"uid,omitempty"`
	EUID string `json:"euid,omitempty"`

	AesSecret        string `json:"aes_secret,omitempty"`
	DesSecret        string `json:"des_secret,omitempty"`
	HmacSecret       string `json:"hmac_secret,omitempty"`
	Md5Secret        string `json:"md5_secret,omitempty"`
	Sha1Secret       string `json:"sha1_secret,omitempty"`
	Sha256Secret     string `json:"sha256_secret,omitempty"`
	Sha512Secret     string `json:"sha512_secret,omitempty"`
	RsaPrivateSecret string `json:"rsa_private_secret,omitempty"`
	RsaPublicSecret  string `json:"rsa_public_secret,omitempty"`

	RsaType      string `json:"rsa_type,omitempty"`
	RsaBits      int    `json:"rsa_bits,omitempty"`
	MerchantCert string `json:"mer_cert,omitempty"`
	SupplierCert string `json:"spl_cert,omitempty"`
	RootCert     string `json:"root_cert,omitempty"`
	CertKey      string `json:"cert_key,omitempty"`

	//Expire int `json:"expire,omitempty"`

	Time       string `json:"time,omitempty"`
	ExpireTime string `json:"expire_time,omitempty"`
}

func (i *Item) GetSecret(stype string) string {
	m, _ := types.Struct2Map(i)
	if v, ok := m[stype]; ok {
		return v.(string)
	}
	return ""
}

func (i *Item) SetSecret(stype, secret string) {
	m, _ := types.Struct2Map(i)
	m[stype] = secret
	buff, _ := json.Marshal(m)
	_ = json.Unmarshal(buff, i)
}
